#pragma once

/*
@author: TriLVH
@description: Entity of obstruction
*/

#include "AbstractEntity.h"
#include "ObstructionData.h"

class ObstructionEntity : public AbstractEntity {
private:
	ObstructionData* _data;
public:
	// constructor to init entity
	//************************************
	// Method:    ObstructionEntity
	// FullName:  ObstructionEntity::ObstructionEntity
	// Access:    public 
	// Returns:   
	// Qualifier:
	// Parameter: int id
	// Parameter: int type
	// Parameter: double x
	// Parameter: double y
	//************************************
	ObstructionEntity(int id, int type, double x, double y);


	// Get abstract data
	//************************************
	// Method:    getAbstractData
	// FullName:  ObstructionEntity::getAbstractData
	// Access:    public 
	// Returns:   AbstractData*
	// Qualifier:
	//************************************
	AbstractData* getAbstractData();

	// update entity
	//************************************
	// Method:    update
	// FullName:  ObstructionEntity::update
	// Access:    public 
	// Returns:   void
	// Qualifier:
	// Parameter: long timetick
	//************************************
	void update(long timetick);

	// draw entity
	void draw(long timetick);

	// init data
	//************************************
	// Method:    initData
	// FullName:  ObstructionEntity::initData
	// Access:    public 
	// Returns:   void
	// Qualifier:
	//************************************
	void initData();
};